API review

Proposer: Stu Glaser

Present at review:

  • List reviewers

Question / concerns / comments

Enter your thoughts on the API and any questions / concerns you have here. Please sign your name. Anything you want to address in the API review should be marked down here before the start of the meeting.

  • Bhaskara
    • The api is currently described by example. There should be an authoritative reference. Some specific questions I have:
      • What's the behavior for nested macroexpansion?
      • What happens when there are parameter name collisions (given nested macros)?
      • What are the command line arguments and return value of the xacro executable?
  • John
    • unit tests
      • example error behavior
        • test2.xacro

          <?xml version="1.0"?>
          <robot>
          hey
          <abc>
          </abc>
          </robot>
        • test.xacro

          <?xml version="1.0"?>
          <robot name="pr2">
            <include filename="test2.xacro" />
          </robot>
        • rosrun xacro xacro.py test.xacro - parse successful, discards hey

          <?xml version="1.0" ?><robot name="pr2">
          
            <abc>
          </abc>
          
          </robot>

Meeting agenda

To be filled out by proposer based on comments gathered during API review period

  • Escaping ${ as $${
  • Make sure you can't define parameters with any of {}$
  • undefined parameters should error out hard. #1176

  • xacro: namespace or xacro_? Josh considers xacro: to be better. Depends on how well the python xml parser handles namespaces. xacro:macro sounds funny.
  • It's difficult to tell what's getting replaced (particularly if you've never seen a xacro file before).
  • Append _macro to all the macro names? Have xacro do it automatically?
  • Add recursive variable substitution #1497. Consider postponing until after 1.0

<xacro:macro pr2_base_macro ...> ... <

OR

<xacro:macro name="pr2_base" ... /> <xacro:pr2_base ... /> (BEST)

OR

<xacro_macro name="pr2_base[_macro]" ... /> (maybe just by convention) <pr2_base_macro ... />

OR

<macro name="pr2_base_macro" ... /> (by convention) <pr2_base_macro ... /> (Also support xacro_macro and xacro_parameter if namespaces don't work)

and also support xacro:macro

And if they use namespaces once, continue to expect them.

Conclusion

Package status change mark change manifest)

  • /!\ Action items that need to be taken.

  • {X} Major issues that need to be resolved


Wiki: xacro/Reviews/2009-09-23 API Review (last edited 2009-09-23 21:48:17 by StuartGlaser)